// pages/bindingMobile/bindingMobile.js
import ajax from '../../utils/index'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    /**
     * 用户ID
     */
    userId: null,
    /**
     * 微信登录code
     */
    loginCode: null,
    /**
     * 协议状态
     */
    agreement: false,
    /**
     * 手动绑定表单
     */
    formData: {
      code: null, // 验证码
      phone: null // 手机号
    },
    /**
     * 验证码定时器
     */
    timer: null,
    codeTime: 60
  },
  /**
   * 获取验证码
   */
  async getCodeRequest() {
    const { formData } = this.data
    if (!formData.phone) return ajax.showToast('请输入手机号');
    if (!ajax.regExp.phone.test(formData.phone)) return ajax.showToast('请输入正确的手机号');
    ajax.showLoading();
    await ajax.get('/wx/user/phoneCode', formData).finally(() => wx.hideLoading());
    this.timerEvent()
    ajax.showToast('验证码已发送, 请注意查收')
  },
  /**
   * 验证码定时器
   */
  timerEvent() {
    this.data.timer = setInterval(() => (this.setData({ codeTime: this.data.codeTime -= 1 }), (this.data.codeTime == 0 ? (clearInterval(this.data.timer), this.setData({ codeTime: 60 })) : null)), 1000)
  },
  /**
   * 服务协议点击事件
   */
  agreementChange(event) {
    this.setData({ agreement: event.detail })
  },

  /**
   * input 变化事件
   */
  inputChange(event) {
    const { formData, userId } = this.data
    const key = event.currentTarget.dataset.key
    const value = event.detail.value
    formData.userId = userId;
    formData[key] = value
    this.setData({ formData })
  },
  /**
   * 手动绑定手机号 提交事件
   */
  async handBindingEvent() {
    const { agreement, formData } = this.data
    const numberRegExp = /^\d{6}$/
    if (!agreement) return ajax.showToast('请同意并阅读盈联易单配服务协议');
    if (!formData.phone) return ajax.showToast('请输入手机号');
    if (!ajax.regExp.phone.test(formData.phone)) return ajax.showToast('请输入正确的手机号');
    if (!formData.code) return ajax.showToast('请输入验证码');
    if (!numberRegExp.test(formData.code)) return ajax.showToast('请输入正确的验证码');
    ajax.showLoading();
    const res = await ajax.post('/wx/user/inputPhone', formData).finally(() => wx.hideLoading());
    const { user, token } = res.data;
    user.roles = user.roles ? JSON.parse(user.roles) : null
    wx.setStorageSync('Token', token), wx.setStorageSync('userInfo', user);
    await ajax.showSuccess('登录成功');
    wx.setStorageSync('pageRoles', 0)
    wx.navigateBack({ delta: 2 });
  },
  /**
   * 获取登录code
   */
  async getLoginCode() {
    const res = await ajax.getLoginCode()
    this.data.loginCode = res.code
  },
  /**
   * 获取手机号信息, 用户信息
   */
  async getPhoneNumber(event) {
    if (event.detail.errMsg !== 'getPhoneNumber:ok') return
    ajax.showLoading();
    const entity = event.detail, { loginCode, userId } = this.data;
    entity.code = loginCode, entity.userId = userId;
    const res = await ajax.post('/wx/user/phone', entity).finally(() => wx.hideLoading());
    const { user, token } = res.data;
    user.roles = user.roles ? JSON.parse(user.roles) : null
    wx.setStorageSync('Token', token), wx.setStorageSync('userInfo', user);
    await ajax.showSuccess('登录成功');
    wx.setStorageSync('pageRoles', 0)
    wx.navigateBack({ delta: 2 });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.data.userId = options.userId || '17'
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    clearInterval(this.data.timer)
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})